package com.guigu.health.quartz;

import com.alibaba.dubbo.config.annotation.Reference;
import com.guigu.health.common.UploadFiles;
import com.guigu.health.pojo.Setmeal;
import com.guigu.health.pojo.User;
import com.guigu.health.pojo.UserExample;
import com.guigu.health.service.SetmealService;
import com.guigu.health.service.UserService;
import com.qiniu.storage.BucketManager;
import com.qiniu.storage.model.FileInfo;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;

/**
 * @ClassName:JobUtils
 * @Description:
 * @Author:longtao
 * @Date:2021/4/8
 * @Version:1.0
 */
public class JobUtils {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    @Reference
    private UserService userService;

    @Reference
    private SetmealService setmealService;

    public void clearGarbagePictures() {
        /**
         * 添加用户类图片路径没有的,用于删除
         */
        List<String> list = new ArrayList<String>();
        UserExample example = new UserExample();
        /**
         * 查询所有用户信息
         */
        List<User> users = userService.queryAllUser(example);
        List<Setmeal> setmeals=setmealService.selectByExample(null);
        /**
         * 查询七牛云所有文件路径
         */
        BucketManager.FileListIterator files = UploadFiles.getAllFiles();
        /**
         * 添加用户中的图片路径
         */
        List<String> usersList = new ArrayList<String>();
        for (User user : users) {
            /**
             * 循环添加用户类的图片路径
             */
            usersList.add(user.getEMailVerificationCode());
        }

        /**
         * 添加套餐表中的图片路径,以防被当做垃圾图片清除
         */
        List<String> setMealImg=new ArrayList<String>();
        for (Setmeal setmeal : setmeals) {
            /**
             * 循环添加套餐类的图片路径
             */
            setMealImg.add(setmeal.getImg());
        }

        /**
         * 判断七牛云是否有文件
         */
        while (files.hasNext()) {
            //处理获取的file list结果
            FileInfo[] items = files.next();
            if(null!=items){
                List<FileInfo> stringList = Arrays.asList(items);
                for (FileInfo info : stringList) {
                    String domainName = UploadFiles.DOMAIN;
                    domainName = domainName + info.key;
                    /**
                     * 判断userList是的包含七牛云的路径
                     */
                    if (usersList.contains(domainName)) {

                    } else {
                        /**
                         * 循环添加垃圾图片路径(用户修改之后的路径)
                         */
                        list.add(info.key);
                    }

                    /**
                     * 判断套餐集合类是否包含七牛云的文件路径
                     */
                    if (setMealImg.contains(domainName)){

                    }else{
                        /**
                         * 没有则循环添加垃圾图片路径,用于清理
                         */
                        list.add(info.key);
                    }
                }
            }

        }
        /**
         * 定义一个数组
         */
        String[] str = new String[list.size()];
        /**
         * 将list集合中的值添加到数组中
         */
        for (int i = 0; i < list.size(); i++) {
            str[i] = list.get(i);
        }
        /**
         * 非空判断,若果数组为空或者数组长度为零则不进行删除
         */
        if (null != str||str.length>0) {
            /**
             * 清理垃圾图片
             */
            List<String> removeFiles = UploadFiles.removeFiles(str);
            /**
             * 依次将垃圾图片输出
             */
            for (String file : removeFiles) {
                System.out.println("清理垃圾图片的路径为= " + file);
            }
        }


    }
}
